home *** CD-ROM | disk | FTP | other *** search
- ;*========================================================================
- ;*
- ;* AESFAST Public Domain AES bindings.
- ;*
- ;* Maintenance:
- ;* 02/10/89 v1.10 - Added more labels to items within global array.
- ;*========================================================================
-
- ;*************************************************************************
- ;*
- ;* Header file for AESFAST source code modules. Offsets (structures)
- ;* and macros can be found here. (Hey! just like a C header...)
- ;*
- ;* Also, if the symbol AES_ALLOCBSS is defined, we will actually
- ;* allocate storage in the BSS section for the AES control blocks, if
- ;* the symbol is not defined, we just define the offsets but no storage.
- ;*
- ;*************************************************************************
-
- .globl aesblock ; Everybody (potentially at least)
- .globl aes_call ; uses these things, so we might
- .globl aes_do ; as well define them here.
-
- FALSE = 0 ; Mundane
- TRUE = 1 ; stuff.
-
- RET2USER = 0 ; These are flags used by the ACall macro to
- RET2HERE = 1 ; decide between calling aes_call or aes_do.
-
- ;-------------------------------------------------------------------------
- ; ACall macro. Call the AES. Depending on the value of the 'type' flag,
- ; we generate a 'jsr aes_call' or a 'jmp aes_do'.
- ;-------------------------------------------------------------------------
-
- .macro ACall type
- .if \type
- jsr aes_call
- .else
- jmp aes_do
- .endif
- .endm
-
- ;-------------------------------------------------------------------------
- ; AControl macro. Load register d0 with the control array (byte) values.
- ; By getting all the control values into a single register (except the
- ; 'addrout' count, which is always zero) we can load the entire control
- ; array with a single 'movep.l' instruction in aes_call.
- ;-------------------------------------------------------------------------
-
- .macro AControl fun,ini,adi,ino
- move.l #( (\fun << 24) | (\ini << 16) | (\adi << 8) | \ino ),d0
- .endm
-
- ;-------------------------------------------------------------------------
- ; Define the offsets within the AES block storage area.
- ;-------------------------------------------------------------------------
-
- .abs ; Offsets from 'aesblock'...
-
- aespb = * ; 'aespb' MUST be first!...
- pcontrl: ds.l 1 ; Pointer to control array
- pglobal: ds.l 1 ; Pointer to global array
- pintin: ds.l 1 ; Pointer to intin array
- pintout: ds.l 1 ; Pointer to intout array
- padrin: ds.l 1 ; Pointer to adrin array
- padrout: ds.l 1 ; Pointer to adrout array
-
- control = * ; Control array is next...
- function: ds.w 1 ; Function code
- sintin: ds.w 1 ; size of intin
- sintout: ds.w 1 ; size of intout
- sadrin: ds.w 1 ; size of adrin
- sadrout: ds.w 1 ; size of adrout
-
- global: ds.w 15 ; Global array, needs no further def.
-
- SZ_AESBLK = * ; Size of the aesblock storage.
-
- ;-------------------------------------------------------------------------
- ; If we are supposed to be allocating the BSS storage (eg, if we are
- ; being included from AESCOMN), export the global labels and define
- ; the necessary BSS storage.
- ;
- ; |1.1: Fully defined the global storage block and exported the labels
- ; for all of it. Names were made up using 'gl_apid' as the example.
- ; This change is primarily to support TOS 1.4, in which the AES
- ; version becomes an important issue.
- ;-------------------------------------------------------------------------
-
- .globl _gl_apid ; Export this label for C programs.
- .globl _global ; Export this label for C programs.
- .globl _aespb ; Export this label for C programs.
- .globl _aescontrol ; |v1.1: added
- .globl _gl_apversion ; |v1.1: added
- .globl _gl_apcount ; |v1.1: added
- .globl _gl_apid ; |v1.1: added
- .globl _gl_apprivate ; |v1.1: added
- .globl _gl_apptree ; |v1.1: added
- .globl _gl_ap1resv ; |v1.1: added
-
- .if ^^defined AES_ALLOCBSS
- .bss
- aesblock: ; Integrated AES data block storage.
- _aespb: ds.l 6 ; Room for aespb array.
- _aescontrol: ds.w 5 ; Room for control array.
- _global: ; Global array...
- _gl_apversion: ds.w 1 ; AES version.
- _gl_apcount: ds.w 1 ; AES max appl count.
- _gl_apid: ds.w 1 ; Application id.
- _gl_apprivate: ds.l 1 ; Application-specific data.
- _gl_apptree: ds.l 1 ; Pointer to head of RSC tree.
- _gl_ap1resv: ;|v1.4: (Old name retained)
- _gl_apprshdr: ds.l 1 ;|v1.4: Pointer to rshdr struct.
- _gl_ap2resv: ds.l 3 ; Rest of the global array.
-
- .endif ; ^^defined AES_ALLOCBSS
-
- .text ; Leave BSS mode...
-
- ; end of code
-